package chapter05_string;

import java.util.Arrays;

/**
 * 描述：
 *      找到字符串中最长的无重复字符子串
 * @author hl
 * @date 2021/9/22 22:52
 */
public class MaxUnique {
    public static void main(String[] args) {
        String str = "aabcb";
        MaxUnique main = new MaxUnique();
        int count = main.maxUnique(str);
        System.out.println(count);

    }
    public int maxUnique(String str){
        if (str == null || str.length() == 0) {
            return 0;
        }
        int[] map = new int[256];
        Arrays.fill(map, -1);
        //遍历过程中以上一个字符结尾的最长无重复字符子串的起始位置的前一个位置
        int pre = -1;
        int len = 0;
        for (int i = 0; i < str.length(); i++) {
            pre = Math.max(pre, map[str.charAt(i)]);
            len = Math.max(len, i - pre);
            map[str.charAt(i)] = i;
        }
        return len;
    }
}
